#include "Shaft.h"

struct ShaftScore
{
	Shaft *shaft;
	int grade;
};

typedef struct ShaftScore ShaftScore;

// constructs a new ShaftScore 'object'
ShaftScore* shaftScoreConstruct(Shaft *shaft);

// deconstructs an existing ShaftScore object
void shaftScoreDeconstruct(ShaftScore *score);

// grades a shaft entirely! 
// calls a lot of private methods in the backend
// for optimal workability of the ShaftScore class, make sure to maintain chainability by returning shaftscore object!
ShaftScore* shaftScoreGradeShaft(ShaftScore *score, int goalFloor, int currentPassengerFloor);